

package Persistencia;

import java.util.ArrayList;

/**
 *
 * @author adrian
 */
/**
 *Esta clase permite invocar los metodos del DAO y proporciona transparencia, en la
 *comunicaion de el componenete de persistencia con los componentes de mas alto nivel.
 *
 */
public class Fachada {
public Fachada(){
}
/**
 * Precondicion:Deben existir estadisticas previamente almacenadas en la base de datos
 * Poscondicion: debe retornar una lista de estadistica llena con todos los registros de la base de datos
 * o vacia en caso de no existir registros.
 *Invoca al metodo del DAO el cual realiza la consulta que obtiene todas las estadisticas
 *que se encuentran almacenadas en el sistema
 *@return lista de estadisticas que se encuentran registradas, Si la lista no hay registros
 *devuelve la lista vacia
 */
public ArrayList<Estadistica> MostrarEstadisticas(){
    return DAO.MostrarEstadisticas();
}
/**
 * Precondicion:Debe existir un usuario administrador almacenado en el sistema previamente.
 * Poscondicion:debe retornar una lista de usyarios llena con todos los registros de la base de datos
 * o vacia en caso de no encontrar registros.
 *Invoca al metodo del DAO el cual realiza la consulta que obtiene todos los usuarios
 *que se encuentran almacenadas en el sistema
 * @return lista de jugadores que se encuentran registrados, Si la lista no hay registros
 *devuelve la lista vacia, Se genera solo un registro por usuario.
 *
 */
public ArrayList<Usuario> MostrarJugadores(){
    return DAO.MostrarJugadores();
}
/**
 * Precondicion: es necesario que todos los datos del jugador se hayan ingresado
 * Poscondicion:debe retornar true si se pudo insertar el registro de lo contrario debe retornar false
 *Invoca al metodo del DAO agregarUsuario el cual realiza la insercion de un nuevo usuario
 * en la base de datos
 * @return TRUE: si el resultado es exitoso
 * FALSE: si ocurrio algun error
 * @param Recibe un Objeto usuario con toda la informacion relacionada con ese usuario
 * en general las inserciones seran solamente de ususarios tipo jugador debido a que solo hay
 * administrador
 */
public boolean agregarUsuario(Usuario jugador){
    return DAO.agregarUsuario(jugador);
}

/**
 * Precondicion: Es necesario que todos los datos de la estadistica se hayan ingresado,
 *              asegurarse de que el idJugador sea unico
 * Poscondicion: Debe retornar true si se pudo insertar el registro de lo contrario debe retornar false
 *Invoca al metodo del DAO agregarUsuario el cual realiza la insercion de un nuevo
 * registro de estadistica en la base de datos
 *@return TRUE: si el resultado es exitoso
 * FALSE: si ocurrio algun error
 *@param Recibe un Objeto estadistica con toda la informacion relacionada con la estadistica de un jugador
 */
public boolean agregarEstadistica(Estadistica estadistica){
    return DAO.agregarEstadistica(estadistica);
}
/**
 * Precondicion:debe exitir el registro de estadistica que tenga el valor de IdJugador
 * Poscondicion:debe retornar true en caso de que se haya eliminado el registro y false en caso contrario
 *Invoca al metodo del DAO eliminarEstadistica el cual realiza la eliminacion de un nuevo
 * registro de estadistica en la base de datos
 *@return TRUE: si el resultado es exitoso
 * FALSE: si ocurrio algun error
 * @param Recibe el identificador del jugador al cual se le desea eliminar su registro de estadisticas
 */
public boolean eliminarEstadistica(int idJugador){
    return DAO.eliminarEstadistica(idJugador);
}
/**
 * Precondicion:debe exitir el registro de jugador que tenga el valor de Id
 * Poscondicion:debe retornar true en caso de que se haya eliminado el registro y false en caso contrario
 *Invoca al metodo del DAO eliminarUsuario el cual realiza la eliminacion de un nuevo
 * registro de usuario en la base de datos
 * @return TRUE: si el resultado es exitoso
 * FALSE: si ocurrio algun error
 * @param Recibe el identificador unico del usuario que desea elminar de la base de datos
 */
public boolean eliminarUsuario(int id){
    return DAO.eliminarUsuario(id);
}

/**
 * Precondicion:El usuario debe existir en el sistema
 * Poscondicion:Debe retornar un Objeto con la informacion del usuario que ingresa al sistema
 * o null de lo contrario
 *Invoca al metodo del DAO validarUsuario el cual permite a al sistema verificar que el ususrio
 * que esta intentando acceder se encuentra registrado previamente.
 *@return Usuario: objeto que contiene toda la informacion que representa al usuario que ingreso al sistema
 * FALSE: si ocurrio algun error
 * @param  Recibe el correo y la clave secreta del usuario que desea ingresar al sistema para que el sistema pueda
 * realizar la validacion mediante la comunicacion con la base de datos.
 */
public Usuario ValidarUsuario(String correo, String clave){
    return DAO.ValidarUsuario(correo, clave);
}
/**
 * Precondicion:Debe exisir el registro de ese usuario en la bse de datos
 * Poscondicion:Debe retornar true en caso de que se haya hecho la modificacion o false
 * en caso contrario
 *Invoca al metodo del DAO modificarEstadistica el cual permite actualizar las estadisticas
 * de un juagdor en la base de datos luago de finalizada una partida de acuerdo a la posicion
 * que ocupo.
 *@return TRUE: si el resultado es exitoso
 * FALSE: si ocurrio algun error
 * @param Recibe el identificador unico del jugador y la posicion en la cual quedo
* luego de finalizada la partida, esta posicion puede tener valores enteros de 1 hasta 4.
 */
public boolean modificarEstadistica(int idjugador, int posicion){
     return DAO.modificarEstadistica(idjugador, posicion);
}
}
